import axios from "axios";

// 本文件定义该项目调用后端服务器API的规范：
// 1、使用Axios库进行网络请求：可参考 https://axios-http.com/zh/

// 创建一个实例，参见: https://axios-http.com/zh/docs/instance
const request = axios.create({
  // 这里根据服务器端地址可以进行修改，如果服务器在本机，地址可以修改为: localhost
  baseURL: "http://47.92.157.229:8888", 
  timeout: 5000,
});

// 在实例上定义：请求拦截器：
// 1、可以自请求发送前对请求做一些处理，比如统一加token，对请求参数统一加密
request.interceptors.request.use(
  (config) => {
    config.headers["Content-Type"] = "application/json;charset=utf-8";
    let employee = localStorage.getItem("employee")
      ? JSON.parse(localStorage.getItem("employee"))
      : null;
    if (employee) {
      config.headers["token"] = employee.token; // 设置请求头
    }
    return config;
  },
  (error) => {
    return Promise.reject(error);
  }
);

// 在实例上定义：响应拦截器：
// 可以在接口响应后统一处理结果
request.interceptors.response.use(
  (response) => {
    let res = response.data;
    // 如果是返回的文件
    if (response.config.responseType === "blob") {
      return res;
    }
    // 兼容服务端返回的字符串数据
    if (typeof res === "string") {
      res = res ? JSON.parse(res) : res;
    }
    //当权限验证不通过时的提示
    if (res.code === 401) {
      ElMessage({
        showClose: true,
        message: res.msg,
        type: "error",
      });
    }
    return res;
  },
  (error) => {
    console.log("err" + error); // for debug
    return Promise.reject(error);
  }
);

// 导出request实例
// 在 main.js中导入，作为全局变量使用，使用时，调用: this.request.post 
// 调用方法参见： https://axios-http.com/zh/docs/instance
export default request;
